GskTransform: Avoid a ref+unref pair
authorTimm Bäder <mail@baedert.org>
Fri, 18 Dec 2020 09:10:56 +0000 (10:10 +0100)
committerTimm Bäder <mail@baedert.org>
Mon, 21 Dec 2020 09:26:02 +0000 (10:26 +0100)
If gsk_transform_is_identity() returned FALSE for the next transform,
the previous code did a ref + unref pair, even though it was unneeded.

gsk/gsktransform.c

index adc64ccc30f75eb7e46354a8a2452b6647c97900..3f1e89ad43086f3cbae26f9f607199d276b4fed0 100644 (file)
@@ -127,8 +127,10 @@ gsk_transform_alloc (const GskTransformClass *transform_class,
 
   self->transform_class = transform_class;
   self->category = next ? MIN (category, next->category) : category;
-  self->next = gsk_transform_is_identity (next) ? NULL : gsk_transform_ref (next);
-  g_clear_pointer (&next, gsk_transform_unref);
+  if (gsk_transform_is_identity (next))
+    gsk_transform_unref (next);
+  else
+    self->next = next;
 
   return self;
 }